/********************************************************************************
 * Project Name		[JavaEE_Web]
 * File Name     	[JSP02.java]
 * Creation Date 	[2015-01-01]
 * 
 * Copyright© ge.y.yang@gmail.com All Rights Reserved
 * 
 * Work hard, play harder, think big and keep fit
 ********************************************************************************/
package _notes.jsp;

/**
 * JSP指令
 * 
 * @author 不落的太阳(Sean Yang aka ShortPeace)
 * @version 1.0
 * @since jdk 1.8
 * 
 */
public final class JSP02 {

	public void directive() {
		/**
		 * JSP指令[JSP Directive]<br/>
		 * 语法: <%@指令 属性名="属性值" %><br/>
		 * JSP指令是为JSP引擎而设计的, 它们并不直接产生任何可见输出, 而只是告诉引擎如何处理JSP页面中的其余部分<br/>
		 * JSP指令的属性名部分是大小写敏感的<br/>
		 * 
		 * JSP规范中定义了三个指令<br/>
		 * page指令: <%@ page...%><br/>
		 * include指令: <%@ include...%><br/>
		 * taglib指令: <%@ taglib...%><br/>
		 */
	}

	public void pageDirective() {
		/**
		 * page指令: 用于定义JSP页面的各种属性, 作用于整个JSP页面, page指令最好是放在整个JSP页面的起始位置<br/>
		 * 
		 * <code>
		 * <%@page
		 *     language="java"				[指定JSP页面使用的编程语言]
		 *     extends="package.class"		[指定JSP页面生成的Servlet的超类]
		 *     import="package.class"		[指定JSP页面生成的Servlet要使用到的Java API]
		 *     session="true|false"			[指定JSP页面是否可以使用session隐含对象, 默认为true]
		 *     buffer="none|KB"				[指定JSP页面输出流是否有缓冲区, 默认为8KB]
		 *     autoFlush="true|false"		[指定JSP页面输出流缓冲区是否自动清除, 默认为true, 设置为false, 缓冲区满了会产生异常]
		 *     isThreadSafe="true|false"	[指定JSP页面是否为单例模式]
		 *     info="page info"				[指定JSP页面的描述信息]
		 *     errorPage="errorPageURL"		[指定JSP页面出错时重定向的页面URL, 必须使用相对路径, 如果以"/"开头, 表示相对于当前Web应用程序的根目录, 否则表示相对于当前页面]
		 *     isErrorPage="true|false"		[指定JSP页面是否为错误处理页面, 默认为false, 设置为true表示可以在页面使用exception隐含对象]
		 *     contentType="mimeType"		[指定JSP页面的响应类型, 实际调用的是response.setContentType("text/html; charset=UTF-8");]
		 *     pageEncoding="charset"		[指定JSP页面的字符编码, 和contentType中的charset一致]
		 *     isELIgnored="true|false"		[指定JSP页面是否忽略EL表达式, 通常取值为false]
		 * %>
		 * </code><br/>
		 * 
		 * import属性会导入以下包<br/>
		 * java.lang.* <br/>
		 * javax.servlet.*<br/>
		 * javax.servlet.jsp.*<br/>
		 * javax.servlet.http.*<br/>
		 */
	}

	public void includeDirective() {
		/**
		 * include指令<br/>
		 * 
		 * include指令用于引入其他页面, JSP引擎会将所有被引入的页面翻译成一个Servlet<br/>
		 * include指令引入被称为静态引入, 引入页面与被引入页面是在JSP翻译过程中进行合并<br/>
		 * 
		 * <code>
		 * <%@include 
		 *     file="relativeURL"			[指定JSP页面要引入的内容, 必须使用相对路径, 如果以"/"开头, 表示相对于当前Web应用程序的根目录, 否则表示相对于当前页面]
		 * %>
		 * </code><br/>
		 * 
		 * 注意:<br/>
		 * 1. 被引入页面必须遵循JSP语法, 其内容可以是静态HTML, JSP脚本元素, JSP指令等普通JSP页面所具有的一切内容 <br/>
		 * 2. 被引入页面可以使用任意的扩展名, 即使其扩展名是html, JSP引擎也会按照处理JSP页面的方式处理它里面的内容<br/>
		 * 3. JSP规范建议使用 .jspf[JSP fragments]作为静态引入页面的扩展名<br/>
		 * 4. 引入与被引入页面的指令不能冲突[即除了import和pageEncoding属性之外,
		 * page指令的其他属性不能在多个页面中有不同的设置值]<br/>
		 * 
		 * 静态引入的使用场景: 每个Web页面都具有的Header和Footer<br/>
		 */
	}

	public void taglibDirective() {

	}
}
